package cn.kinoko.service.user;


import cn.kinoko.model.user.dto.UserInfoDto;
import cn.kinoko.model.user.entity.UserInfo;
import cn.kinoko.model.user.req.PassChangeReq;
import cn.kinoko.model.user.req.UserInfoSaveReq;
import cn.kinoko.model.user.req.UserInfoUpdateReq;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 用户基础信息服务
 *
 * @Author: kk
 * @Date: 2023/2/7  20:52
 * @Version 1.0
 */
public interface UserInfoService extends IService<UserInfo> {
    /**
     * 验重
     *
     * @param phone 手机号
     * @param email 邮箱
     * @param uid 用户id
     * @return 是否重复
     */
    boolean checkRepeat(String phone, String email, Long uid);

    /**
     * 根据手机/邮箱查询用户
     *
     * @param account 手机/邮箱
     * @return 用户信息
     */
    UserInfoDto getUserInfoDtoByAccount(String account);

    /**
     * 保存用户信息
     *
     * @param userInfo 用户信息
     * @return 执行结果
     */
    boolean save(UserInfoSaveReq userInfo);

    /**
     * 更新用户信息
     *
     * @param currentUser 当前用户
     * @param req         用户信息
     * @return 执行结果
     */
    boolean update(UserInfo currentUser, UserInfoUpdateReq req);

    /**
     * 获取用户信息
     * @param uid uid
     * @return 用户信息
     */
    UserInfo getUser(Long uid);

    /**
     * 修改密码
     * @param req 请求
     * @return 执行结果
     */
    boolean changePass(PassChangeReq req);

    /**
     * 重置密码
     * @param email 邮箱
     * @param newPwd 新密码
     * @return 执行结果
     */
    boolean resetPass(String email, String newPwd);
}
